﻿#region License statement
// NJamb, a specification and delta-specification DSL
// Copyright (c) 2010-2011, Mark Knell
// Published under the MIT License; all other rights reserved
#endregion

#region using...
using System;
using NJamb.Parser.SpecificationBuilders;
using NJamb.Specifications;
#endregion

namespace NJamb.Parser.Subjects
{
    public interface ICollaboratingSubject
    {
        string Description { get; }
        Lazy<string> LazyDescription { get; }
    }

    public interface ICollaboratingSubject<out TSubject> : ICollaboratingSubject
    {
        TSubject Get();
    }

    public interface ICollaboratingSubject<TSubject, out TSpecifies> : ICollaboratingSubject<TSubject>,
        ICollaboratingSpecificationBuilder<TSubject, TSpecifies>
        where TSpecifies : class, ISpecification<TSubject> {}
}
